<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="lib.css" type='text/css' />
<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
<link rel='start' href='../index.html' title='Python documentation Index' />
<link rel="first" href="lib.html" title='Python library Reference' />
<link rel='contents' href='contents.html' title="Contents" />
<link rel='index' href='genindex.html' title='Index' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="next" href="module-sha.html" />
<link rel="prev" href="module-hmac.html" />
<link rel="parent" href="crypto.html" />
<link rel="next" href="module-sha.html" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name='aesop' content='information' />
<title>10.3 md5 -- MD5信息摘要算法</title>
</head>
<body>
<div class="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="10.2 hmac  "
  href="module-hmac.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="10. cryptographic Services"
  href="crypto.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="10.4 sha  "
  href="module-sha.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python库参考</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'><b class="navlabel">前一节：</b><a class="sectref" rel="prev" href="module-hmac.html">10.2 hmac </a> <b class="navlabel">上一级：</b><a class="sectref" rel="parent" href="crypto.html">10. Cryptographic Services</a> <b class="navlabel">下一节：</b><a class="sectref" rel="next" href="module-sha.html">10.4 sha </a></div>
<hr /></div>
</div>
<!--End of Navigation Panel-->

<h1><a name="SECTION0012300000000000000000">
10.3 <tt class="module">md5</tt> --
         MD5信息摘要算法 </a></h1>

<p>
<a name="module-md5"></a>

<p>
<div class="versionnote"><b>自从2.5版本后不推荐使用。使用</b><tt class="module"><a href="module-hashlib.html">hashlib</a></tt> 模块代替。</div>
<p></p>

<p>
这个模块实现 RSA的 MD5 信息摘要算法的接口<a id='l2h-2153' xml:id='l2h-2153'></a>
(也见 Internet <a class="rfc" id='rfcref-100451' xml:id='rfcref-100451'
href="http://www.faqs.org/rfcs/rfc1321.html">RFC 1321</a>).  它的用法是相当的简单：使用 <tt class="function">new()</tt> 创建一个 md5 对象。现在你也可以使用
<tt class="method">update()</tt> 方法为这个对象加上任意的字符串，并且你可以使用 <tt class="method">digest()</tt> 方法在到目前为止加入到该对象中的字符串连接中的任一点请求它的摘要(某种高达128位的校验和，又名``指纹'') 。
<a id='l2h-2154' xml:id='l2h-2154'></a>
<p>
例如，获取字符串 <code>'Nobody inspects
the spammish repetition'</code>的摘要：
<p>
<div class="verbatim"><pre>
&gt;&gt;&gt; import md5
&gt;&gt;&gt; m = md5.new()
&gt;&gt;&gt; m.update("Nobody inspects")
&gt;&gt;&gt; m.update(" the spammish repetition")
&gt;&gt;&gt; m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
</pre></div>

<p>
更浓缩的：
<p>
<div class="verbatim"><pre>
&gt;&gt;&gt; md5.new("Nobody inspects the spammish repetition").digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
</pre></div>

<p>
下面提供的值作为模块中的常量和作为由 <tt class="function">new()</tt> 返回的md5对象的属性：
<p>
<dl><dt><b><tt id='l2h-2146' xml:id='l2h-2146'>digest_size</tt></b></dt>
<dd>
  合成的摘要的大小，以字节为单位。该值一直为
  <code>16</code>。</dd>
</dl>

<p>
md5 模块提供下列函数：
<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><tt id='l2h-2147' xml:id='l2h-2147' class="function">new</tt></b>(</nobr></td>
  <td><var></var><big>[</big><var>arg</var><big>]</big><var></var>)</td></tr></table></dt>
<dd>
返回一个新的 md5 对象。如果 <var>arg</var> 出现，该方法调用 <code>update(<var>arg</var>)</code> 来完成构造。 
</dl>

<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><tt id='l2h-2148' xml:id='l2h-2148' class="function">md5</tt></b>(</nobr></td>
  <td><var></var><big>[</big><var>arg</var><big>]</big><var></var>)</td></tr></table></dt>
<dd>
为了向后兼容的原因，对于
<tt class="function">new()</tt> 函数，这是一个可以任选其一的名称。
</dl>

<p>
一个 md5 对象有下列方法：
<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><tt id='l2h-2149' xml:id='l2h-2149' class="method">update</tt></b>(</nobr></td>
  <td><var>arg</var>)</td></tr></table></dt>
<dd>
使用 <var>arg</var> 字符串更新 md5 对象。重复调用相当于所有参数连接的一次调用：<code>m.update(a)； m.update(b)</code> 相当于
<code>m.update(a+b)</code>。
</dl>

<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><tt id='l2h-2150' xml:id='l2h-2150' class="method">digest</tt></b>(</nobr></td>
  <td><var></var>)</td></tr></table></dt>
<dd>
返回到目前为止传递给 <tt class="method">update()</tt>
方法的字符串的摘要。这是一个16字节的字符串，可以包含非ASCII字符串，包括 null 字节。
</dl>

<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><tt id='l2h-2151' xml:id='l2h-2151' class="method">hexdigest</tt></b>(</nobr></td>
  <td><var></var>)</td></tr></table></dt>
<dd>
类似于 <tt class="method">digest()</tt> 除了被返回的该摘要作为32长度的字符串，仅包含十六进制的数值。这可以在email中或其他非二进制环境中用作安全地交换该值。
</dl>

<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><tt id='l2h-2152' xml:id='l2h-2152' class="method">copy</tt></b>(</nobr></td>
  <td><var></var>)</td></tr></table></dt>
<dd>
返回 md5 对象的一个副本(&quot;克隆&quot;)。这可以被用来高效率地计算共享的一个通用初始子串的摘要。
</dl>

<p>
<div class="seealso">
  <p class="heading">也见：</p>

  <dl compact="compact" class="seemodule">
    <dt>模块 <b><tt class="module"><a href="module-sha.html">sha</a></tt>:</b>
    <dd>类似模块实现安全的 Hash
                  算法 (SHA)。SHA 算法被认为是一种更安全的hash。
  </dl>
</div>

<div class="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="10.2 hmac  "
  href="module-hmac.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="10. cryptographic Services"
  href="crypto.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="10.4 sha  "
  href="module-sha.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python库参考</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">前一节：</b><a class="sectref" rel="prev" href="module-hmac.html">10.2 hmac  </a>
<b class="navlabel">上一级：</b><a class="sectref" rel="parent" href="crypto.html">10. Cryptographic Services</a>
<b class="navlabel">下一节：</b><a class="sectref" rel="next" href="module-sha.html">10.4 sha  </a>
</div>
</div>
<hr />
<span class="release-info">2.5.1 版， 文档更新在 2007，4，18。翻译：<a href="http://www.zkfarmer.org">zkfarmer</a>。</span></div>
<!--End of Navigation Panel-->
<address>
关于建议修改的信息查阅 <i><a href="about.html">关于这个文档...</a></i>。
</address>
</body>
</html>
